package algo_annotations.data.sites;

import java.util.ArrayList;


public class SousGroupeSite implements Comparable<SousGroupeSite> {
	GroupeSite grpSite; // tous les sites
	String name;
	public ArrayList<Integer> vIndexSite;

	public SousGroupeSite(String name, GroupeSite grpSite) {
		this.name = name;
		this.grpSite = grpSite;
		vIndexSite = new ArrayList<Integer>();
	}

	public SousGroupeSite getCopy() {
		SousGroupeSite newSgs = new SousGroupeSite(this.name, this.grpSite);
		for (Integer i : this.vIndexSite)
			newSgs.vIndexSite.add(i);
		return newSgs;
	}

	public void addSite(Site site) {vIndexSite.add(site.index);}

	public int size() {return vIndexSite.size();}

	// renvoie les sites correspondant à ce sous-groupe
	public ArrayList<Site> getSites() {
		ArrayList<Site> vRes = new ArrayList<Site>();
		for (int index : vIndexSite)
			vRes.add(grpSite.vSite.get(index));
		return vRes;
	}

	// pour des raisons d'affichage dans la liste de sélection d'un site particulier en première place
	public void makeThisSiteFirst(Site site) {
		Integer i = new Integer(site.index);
		vIndexSite.remove(i);
		vIndexSite.add(0, i);
	}


	@Override
	public String toString() {return name;}

	public String printSite() {
		String res = "";
		String line = "";
		for (int index : vIndexSite) {
			line += grpSite.vSite.get(index).libelle + " , ";
			if (line.length() > 50) {
				res += line + "\n";
				line = "";
			}
		}
		if (line.length()>0)
			res += line + "\n";
		return res;
	}

	public void absorbSitesFrom(SousGroupeSite sgs) {
		vIndexSite.addAll(sgs.vIndexSite);
	}

	public int compareTo(SousGroupeSite sgs) {
		if (this.size()>sgs.size())
			return 1;
		if (this.size()<sgs.size())
			return -1;
		return 0;
	}
}
